A software application is accessed by a computing device and given the heterogeneous characteristics of such devices. The software application has then to be adapted for the characteristics of that device. The software application contains multiple components that are semantically related to each other; for example an image in one view being referred to in another view. (A “view” is a web page which is displayed back to the user in a web application). Another example is components which accept user inputs that may be very important to other components, as their behaviour would be dependant on the inputs. Therefore, any modification of a software application should carefully consider removal, updating or modification of components on which other components depend for correct functioning.
A known approach is translation or adaptation of the application components. This approach is widely used, however adapts the components one-by-one without taking care of the global semantics of the application. In this way, an element is modified without any related element being updated appropriately. For example, an image dropped in ‘view 1’ should lead to the reference to it being updated in ‘view 2’. Since related elements are not updated at the adaptation of a given element, the applications generated as part of adaptation do not remain semantically consistent. This inconsistency may lead to malfunction of the application.
U.S. Pat. No. 5,561,803 (Kilis, issued on Oct. 1, 1996) describes incrementally processing a source representation of a set of objects into an intermediate representation. The object is to re-process only those objects which have been changed in some way when a modification is made. Each changed facet of a changed object is selected in turn for processing. If the selected changed facet affects the object itself, then the previous intermediate representation of the object is modified. If the selected changed facet affects objects referencing or being referenced by the first object, then the references to the first object are detached and the intermediate representation of the objects referencing or being referenced by the object are modified accordingly. If the selected changed facet modifies an attribute of other objects, then due to inter-relationships such as inheritance, etc., the change recursively propagates to the intermediate representations of the objects in the affected objects by repeating the propagating step for each of the affected objects until the attribute changes to each modified object have been propagated to all affected objects. Semantic checking is then performed on each of the objects changed.
It is an objective of the present invention to adapt applications taking into account device characteristics, while maintaining semantic and functional consistency.